home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu309.dms / pu309.adf / Radio-Log (.txt) < prev    next >
AmigaBASIC Source Code  |  1990-09-05  |  25KB  |  843 lines

  1. ' RADIO-LOG (©) Copyright 1990 by Rev.Arend Venema Snr. (VK3CHP)
  2. ' Copy of the program only permitted if program is copied unchanged.
  3. ' See SHARE-Note in Read-Me Program.
  4.  
  5. TOP:  
  6.    CLEAR ,200000 ,8000
  7.    GOSUB 30000 :GOTO 1000
  8. 2 :
  9.    IF NUM=1 AND NM=1 THEN RETURN
  10.    C$=CS$:
  11.    IF JO=1 THEN C$=OCS$
  12.    W=1:T=NM:J=LEN(C$):FL=0:UP=0:DWN=0:Y=0
  13. 3 : 
  14.    X= INT (T/2)
  15.  4 IF C$ = LEFT$(IN$(T),J) THEN GOTO 23
  16.  5 IF C$ < LEFT$(IN$(T),J) THEN T = (T-X):X = INT(X/2):XL=1
  17.  6 IF X = 0 AND XL = 1 THEN T = T - 1
  18.  7 IF T < 1 THEN T = 0: GOTO 28
  19.  8 IF T > NM THEN T = 0: GOTO 28
  20.  9 IF C$ > LEFT$(IN$(T),J) THEN T = (T+X):X = INT(X/2):XK=1
  21. 10 IF X=0 AND XK=1 THEN T=T+1
  22. 11 W=1
  23. 12 FL=FL+1: IF FL=20 THEN T=0: GOTO 18
  24. 13 IF T<1 THEN T=0: GOTO 28
  25. 14 IF T>NM THEN T=0: GOTO 28
  26. 15 XL=0:XK=0: GOTO 4
  27. 16 IF C$= LEFT$(IN$(T),J) THEN GOTO 23
  28. 17 GOTO 22
  29. 18 IF C$ <> LEFT$(IN$(T),J) THEN 28
  30. 19 IF C$ = LEFT$(IN$(T),J) THEN GOTO 23
  31. 20 IF UP=1 THEN T=T+1: GOTO 18
  32. 21 IF DWN=1 THEN T=T-1: GOTO 18
  33.  
  34. 22 IF FL THEN GOTO 4
  35. 23 IF C$ > LEFT$(IN$(T),LEN(IN$(T))-4) THEN T=T+1:UP=1: GOTO 18
  36.  
  37. 24 IF C$ < LEFT$(IN$(T),LEN(IN$(T))-4) THEN T=T-1:DWN=1: GOTO 18 
  38. 25 IF LEN(C$) <> LEN(IN$(T))-4  THEN 28
  39. 27 QL$="-":YU=1:XM=T:KK=0:LOCATE 21,1:GOTO 29
  40.  
  41. 28 GOSUB CLRBT 
  42.    QL$="+":YU=0:KL=0:LOCATE 21,4
  43.    COLOR 2,3:PRINT "NEW CALLSIGN - Type in information....":
  44.    COLOR 2,1
  45.    LOCATE V,3:PRINT TD$;:PRINT  TAB(7);CS$;:TM$="     ":PRINT  TAB(19);TM$;:
  46.    LOCATE V,27:FQ$="      ":PRINT FQ$;:RO$="   ":PRINT  TAB(36);RO$;:RI$="   ":PRINT  TAB(41);RI$;:
  47.    LOCATE V,46:NM$="         ":PRINT NM$;:QT$="             ":PRINT  TAB(57);QT$;:
  48.    LOCATE V,72:PRINT  NUM;:PRINT  TAB(78);QL$
  49. RETURN                                                  
  50.  
  51. 29 FOR I = XM TO NUM-1: IF C$ <> LEFT$(IN$(I),LEN(IN$(I))-4) THEN E=I-1:GOTO 31
  52. 30 NEXT I                       
  53. 31 FOR I = XM TO 1 STEP -1: IF C$ <> LEFT$(IN$(I),LEN(IN$(I))-4) THEN Q=I+1:GOTO 33
  54. 32 NEXT I
  55. 33 IF Q=0 THEN Q=1         
  56.    IF E=0 THEN E=1
  57.    IF XM=NUM-1 THEN E=XM
  58.    CT=(E-Q)+1:IF CT=<0 THEN CT=1
  59.    IF JO=1 THEN JO=0 : RETURN ' JO=Jump Out by Change Callsign
  60. 34 R%=VAL (RIGHT$(IN$(Q),4))
  61.    
  62.    GOSUB CHECKDAT
  63.    MX=VAL(LEFT$(DT$,2))
  64.    XT$=MID$(DT$,4,2)
  65.    
  66.    
  67. 47 GOSUB CLRBT
  68.    LOCATE 21,4:COLOR 2,3:PRINT "First contact  ";XT$;" ";MTH$(MX);" ";RIGHT$(DT$,4)
  69.    LOCATE 21,37:PRINT CS$;:PRINT TAB(46);NM$;:PRINT TAB(58);QT$;:PRINT TAB(72);R%;:PRINT TAB(78);QL$
  70.    
  71. 49 R%=VAL(RIGHT$(IN$(E),4))
  72.    GOSUB CHECKDAT
  73.    MX=VAL(LEFT$(DT$,2))
  74.    XT$=MID$(DT$,4,2)
  75.    LOCATE 22,4:PRINT "Last contact   ";XT$;" ";MTH$(MX);" ";RIGHT$(DT$,4)
  76.    LOCATE 23,4:PRINT "Number of contacts is ";:PRINT CT;:COLOR 2,1
  77.    LOCATE V,46:PRINT  NM$;:PRINT TAB(57);QT$
  78.    Q=0:E=0:CT=0:TM$="     ":FQ$="      ":RO$="   ":RI$="   "
  79.    LOCATE V,19:PRINT TM$:LOCATE V,27:PRINT FQ$:LOCATE V,36:PRINT RO$:LOCATE V,41:PRINT RI$
  80.    RETURN 
  81.  
  82. 50 :' ROUTINE FOR MOVEMENT AFTER F KEY IS PRESSED..
  83.    F=0:C$=""
  84.    LOCATE BB,LL:COLOR 1,1:PRINT" ":COLOR 2,3
  85.    
  86. 51 :
  87.    A$=INKEY$:A$=UCASE$(A$)
  88.    IF A$=CHR$(32) THEN BEWEEG
  89.    IF A$=""THEN 51
  90.    IF A$ = CHR$(8) THEN TERUG
  91.    SK=LEN(C$):IF SK>0 THEN SPRING
  92. SPRING:
  93.    IF A$=CHR$(13) THEN LAATZIEN
  94.    IF A$>CHR$(57) AND A$<CHR$(65) THEN GOTO 51
  95.    IF A$>CHR$(46) AND A$<CHR$(91) THEN GOTO BEWEEG
  96.    IF F=0 THEN GOTO 51
  97.  
  98. LAATZIEN:
  99.    LOCATE BB,LL:PRINT C$;:COLOR 3,3:PRINT " " 
  100. RETURN
  101.   
  102. BEWEEG:
  103.    C$=C$+A$:
  104.    LOCATE BB,LL:PRINT C$;
  105.    COLOR 1,1:PRINT " ":COLOR 2,3
  106.    GOTO 51
  107.    
  108. TERUG:
  109.    U=LEN(C$)-1:IF U=-1 THEN 51
  110.    C$=LEFT$(C$,U):COLOR 2,3
  111.    LOCATE BB,LL:PRINT C$;
  112.    COLOR 1,1:PRINT " ";:COLOR 3,3:PRINT " "
  113.    GOTO 51
  114.  
  115. LOGBOOK:
  116.    GOSUB CLRBT:COLOR 2,3:LOCATE 21,50:PRINT "LOGBOOK - LIST..."
  117.    LOCATE 21,4:PRINT "Starting No. of Logbook-List: "
  118.    BB=21:LL=34:GOSUB 50:SN$=C$
  119.    B=LEN(SN$):IF B>4 THEN PRINT BL$:GOTO LOGBOOK
  120.    COLOR 2,3
  121.    LOCATE 22,4:PRINT "Ending No. of Logbook-List: "
  122.    BB=22:LL=32:GOSUB 50:EN$=C$  
  123.    B=LEN(EN$):IF B>4 THEN PRINT  BL$:GOTO LOGBOOK
  124.    GOSUB CLRBT: COLOR 2,3:LOCATE 21,50:PRINT "LOGBOOK - LIST..."
  125.    LOCATE 21,4:PRINT "LOGBOOK LIST from No.: ";SN$;" to ";EN$
  126.    LOCATE 22,4:PRINT "Are You Happy With These Figures ? Y/N":
  127. 60 :   
  128.    KL$=INKEY$ :KL$=UCASE$(KL$)
  129.    IF KL$ = "Y" THEN 62
  130.    IF KL$= "N" THEN 61 
  131.    IF KL$ <> "Y" OR KL$ <> "N" THEN 60
  132.   61 IF KL$="N" THEN NUM=NM:V=V-1:AL=1:GOSUB 81:GOTO DATE
  133.   62 R%=VAL(SN$):E=VAL(EN$): PG=1:PA=1
  134. 69 :
  135.    GOSUB CHECKDAT
  136.    IF PG=1 THEN LPRINT TAB(20):LPRINT "L O G B O O K  -  L I S T  from ";SN$;" to ";EN$;:LPRINT TAB(70)
  137.    IF PG=1 THEN LPRINT "PAGE :"PA:FOR I = 1 TO 80:LPRINT "-";:NEXT
  138.    IF PG=1 THEN LPRINT "NUM. CALLSIGN  DATE        TIME  FREQ.  SIGNAL  SIGNAL  NAME     TOWN        QSL":
  139.    IF PG=1 THEN FOR I = 1 TO 80:LPRINT "-";:NEXT:LPRINT:   
  140.    R$=STR$(R%):R$=MID$(R$,2,(LEN(R$)-1))
  141.    IF LEN(R$)=1 THEN R$="000"+R$
  142.    IF LEN(R$)=2 THEN R$="00"+R$
  143.    IF LEN(R$)=3 THEN R$="0"+R$
  144.    GOSUB PRILINE :
  145.    R%=R%+1:IF R%=E+1 THEN NUM=NM:V=V-1:AL=1:GOSUB 81:GOTO DATE
  146.    PG=PG+1:IF PG=KJ THEN PG=1:PA=PA+1:LPRINT:LPRINT:FOR I = 1 TO 80:LPRINT "-";:NEXT:LPRINT:LPRINT:LPRINT:LPRINT:
  147.    GOTO 69
  148.       
  149. 80 : ' window
  150.    title$=SPACE$(Z)+"LOGBOOK "+SU$(1)
  151.    WINDOW 2,title$,(0,0)-(631,186),16
  152. 81 :   
  153.    COLOR 2,3:CLS:COLOR 2,1
  154.    tp=32:bt=155:lf=8:rt=626
  155.    LINE (4,tp)-(627,bt+2),2,bf ' black shadow
  156.    LINE (lf,tp)-(rt,bt),1,bf   ' white box
  157.    LINE (lf,tp)-(rt,tp)
  158.    LINE (4,22)-(625,24),2,bf
  159.    LINE (4,24)-(8,32),2,bf
  160.    LINE (42,tp)-(42,bt)
  161.    LINE (131,tp)-(131,bt)
  162.    LINE (195,tp)-(195,bt)
  163.    LINE (268,tp)-(268,bt)
  164.    LINE (312,tp)-(312,bt)
  165.    LINE (355,tp)-(355,bt)
  166.    LINE (443,tp)-(443,bt)
  167.    LINE (564,tp)-(564,bt)
  168.    LINE (624,22)-(627,bt),2,bf
  169.    LINE (lf,bt)-(rt,bt)
  170.    LOCATE 2,2
  171.    COLOR 2,3:PRINT "MONTH:";:PRINT TAB(19);:
  172.    COLOR 2,3:PRINT "YEAR:";:PRINT TAB(49);:
  173.    COLOR 2,3:PRINT "High No:";:PRINT TAB (64);:
  174.    COLOR 2,3:PRINT "Line No:"
  175.    LOCATE 2,9:PRINT MTH$(MT)
  176.    LOCATE 2,25:PRINT YR$
  177.    COLOR 1,2:LOCATE 4,2:PRINT Z2$
  178.    IF PQ=1 THEN PQ=0:SU=1:GOSUB 1915:RETURN
  179.    GOSUB 1915:NUM=NUM+1:V=V+1:IF NUM=2 THEN V=V-1:NUM=1
  180.    GOSUB 1915:V=V-1:IF AL=1 THEN AL=0:V=V+1
  181. RETURN
  182.  
  183. CHGMTH:
  184.    GOSUB CLRBT:COLOR 2,3:LOCATE 21,4:
  185.    PRINT "Type in Month > Number 1 to 12 < " 
  186.    BB=21:LL=38 :GOSUB 50
  187.  
  188.    MT=VAL(C$): IF LEN(C$) =1 THEN C$="0"+C$
  189.    IF MT>12 THEN PRINT BL$:GOTO CHGMTH
  190.    MA$=RIGHT$(STR$(MT),2)
  191.    IF LEN(MA$) <> 2 THEN PRINT BL$:GOTO CHGMTH
  192.    LOCATE 22,4:COLOR 2,3
  193.    PRINT "Type in Year > 4 numbers < "
  194.    BB=22:LL=32: GOSUB 50
  195.    YR$=C$  
  196.    IF LEN(YR$) <> 4 THEN PRINT BL$;:GOTO CHGMTH
  197.    GOSUB CLRBT:COLOR 2,3:
  198.    LOCATE 21,4:PRINT "Month = ";MTH$(MT);:PRINT "  -  Year = ";YR$
  199.    LOCATE 22,4:PRINT "Are You Happy With These Figures ? Y/N"
  200. 90 :
  201.    KL$=INKEY$ :KL$=UCASE$(KL$)
  202.    IF KL$="Y" THEN 91   
  203.    IF KL$= "N" THEN CHGMTH
  204.    IF KL$ <> "Y" OR KL$ <> "N" THEN 90
  205. 91 :
  206.    COLOR 2,3:LOCATE 2,9:PRINT "          ":LOCATE 2,25:PRINT "     "
  207.    COLOR 2,3:LOCATE 2,9:PRINT MTH$(MT);:        
  208.    LOCATE 2,25:PRINT  YR$;:
  209.    COLOR 2,1
  210.    NUM=NM:V=V-1
  211.    AL=1:GOSUB 81:GOTO DATE
  212.  
  213. 100 :
  214.    F=0:C$=""
  215.    IF SS=1 THEN SS=0:LOCATE V,H:COLOR 2,3:PRINT SS$:COLOR 2,1:GOTO GetAKey
  216.    LOCATE V,H:COLOR 1,3:PRINT " ":COLOR 2,1
  217.  
  218. GetAKey:
  219.    A$=INKEY$
  220.    IF A$=CHR$(32) THEN GOTO MOVE
  221.    A$=UCASE$(A$)
  222.    IF A$="" THEN GOTO GetAKey
  223.    IF A$=CHR$(8) THEN GOTO BACKSPACE
  224.    SK=LEN(C$):IF SK>0 THEN GOTO SKIP    
  225.    IF A$=CHR$(31) THEN MV=1:LOCATE V,H:PRINT " ":RETURN
  226.    IF A$=CHR$(30) THEN MV=2:LOCATE V,H:PRINT " ":RETURN
  227.    IF A$=CHR$(28) AND H=3 THEN LOCATE V,H:PRINT TD$:JP=1:RETURN
  228.    IF A$=CHR$(29) AND H=3 THEN LOCATE V,H:PRINT TD$:JP=2:RETURN
  229.    IF A$=CHR$(134) AND H=3 THEN SU=1:LQ=0:LOCATE V,H:PRINT TD$:GOSUB WRITDAT:GOSUB CONVNR:GOSUB MAKEDATA:GOSUB 1900:RETURN
  230.    IF A$=CHR$(129) AND H=3 THEN LOCATE V,H:PRINT TD$:GOTO SAVFIL
  231.    IF A$=CHR$(130) AND H=3 THEN LOCATE V,H:PRINT TD$:QT=2:GOTO SAVFIL
  232.    IF A$=CHR$(136) AND H=3 THEN LOCATE V,H:PRINT TD$:GOTO ALPHAPRINT
  233.    IF A$=CHR$(131) AND H=3 THEN LOCATE V,H:PRINT  TD$: GOTO MOVETONUM
  234.    IF A$=CHR$(137) AND H=3 THEN LOCATE V,H:PRINT TD$:GOTO QSLCARD
  235.    IF A$=CHR$(138) AND H=3 THEN LOCATE V,H:PRINT TD$:QT=1:GOTO SAVFIL
  236.    IF A$=CHR$(139) AND H=3 THEN LOCATE V,H:PRINT TD$:GOSUB HELP:RETURN
  237.    IF A$=CHR$(133) AND H=3 THEN LOCATE V,H:PRINT TD$:GOTO LOGBOOK
  238.    IF A$=CHR$(132) AND H=3 THEN LOCATE V,H:PRINT TD$:GOTO CHGMTH
  239.    IF A$=CHR$(135) AND H=3 THEN LOCATE V,H:PRINT TD$:GOSUB QSLCONF:R%=NUM:GOSUB WRIQSL:GOTO DATE
  240.    
  241.    
  242. SKIP:
  243.    IF A$=CHR$(13) THEN GOTO SHOW
  244.    IF A$>CHR$(57) AND A$<CHR$(65) THEN GOTO GetAKey
  245.    IF A$>CHR$(128) AND A$<CHR$(140) AND H=7 THEN GOTO MOVE
  246.    IF A$>CHR$(46) AND A$<CHR$(91) THEN GOTO MOVE
  247.    IF F=0 THEN GOTO GetAKey
  248.  
  249. SHOW:
  250.    LOCATE V,H:PRINT C$;:COLOR 2,1:PRINT " " 
  251. RETURN
  252.  
  253. MOVE:
  254.    C$=C$+A$ :LOCATE V,H:PRINT C$;
  255.    IF WN=2 AND C$="…ˆƒ†"THEN QT=3:GOTO SAVFIL
  256.    IF WN=1 AND LEN(C$) >3 THEN PRINT BL$:LOCATE V,H:PRINT "   ":GOTO 100
  257.    IF WN=2 AND LEN(C$) >9 THEN PRINT BL$:LOCATE V,H:PRINT "          ":GOTO 100
  258.    IF WN=3 AND LEN(C$) >4 THEN PRINT BL$:LOCATE V,H:PRINT "     ":GOTO 100
  259.    IF WN=4 AND LEN(C$) >5 THEN PRINT BL$:LOCATE V,H:PRINT "      ":GOTO 100
  260.    IF WN=5 AND LEN(C$) >9 THEN PRINT BL$:LOCATE V,H:PRINT "          ":GOTO 100
  261.    IF WN=6 AND LEN(C$) >13 THEN PRINT BL$:LOCATE V,H:PRINT "              ":GOTO 100
  262.    IF WN=7 AND LEN(C$) >2 THEN PRINT BL$:LOCATE V,H:PRINT "   ":GOTO 100
  263.    COLOR 1,3:PRINT " ":COLOR 2,1
  264.    GOTO GetAKey
  265.  
  266. BACKSPACE:
  267.    L=LEN (C$)-1:IF L=-1 THEN GOTO GetAKey
  268.    C$= LEFT$(C$,L)
  269.    LOCATE V,H:PRINT C$;
  270.    COLOR 1,3:PRINT " ";:COLOR 2,1:PRINT " "
  271.    GOTO GetAKey
  272.  
  273. SAVFIL:
  274.    GOSUB CLRBT
  275.    IF QT=2 THEN COLOR 2,3:LOCATE 22,4:PRINT "PLEASE WAIT..... NOW SAVING DATA BEFORE RUNNING HEADING-CHANGE !":GOTO HOP1
  276.    COLOR 2,3:LOCATE 22,4:PRINT "Please wait now saving ALL info...";:
  277. HOP1:   
  278.    COLOR 2,1
  279.    GOSUB 700: GOSUB WRI.INNUM:
  280.    IF QT=1 THEN SYSTEM
  281.    IF QT=2 THEN QT=0:RUN "Heading"
  282.    IF QT=3 THEN QT=0:RUN "EAGLE"
  283.    NUM=NM:V=V-1:AL=1:GOSUB 81:GOTO DATE
  284.  
  285. HELP:
  286.    GOSUB CLRBT:COLOR 2,3:LOCATE 21,4
  287.    PRINT "FUNCTION KEYS    2. ChangeHeading 5. Print Logbook 8. Alpha Print-out ";:
  288.    LOCATE 22,4:
  289.    PRINT "                 3. Move To Line  6. Save Lineinfo 9. Print QSL Cards ";:
  290.    LOCATE 23,4:
  291.    PRINT "1. SAVE ALL INFO 4. New Month     7. QslCard Back 10. SAVE info & QUIT";:
  292.    COLOR 2,1:MB=1
  293. RETURN      
  294.  
  295. 200 :
  296.    C$=LEFT$(CS$,1):
  297.    W=1:T=DKX-2:Z=T:FL=0:UP=0:DWN=0:Y=0:XL=0:XK=0
  298. 203 : 
  299.    X= INT (T/2)
  300. 204 :
  301.    IF C$ = LEFT$(XX$(T),1) THEN 229
  302.    IF C$ < LEFT$(XX$(T),1) THEN T = (T-X):X = INT(X/2):XL=1
  303.    IF X = 0 AND XL = 1 THEN T = T - 1
  304.    IF T < 1 THEN T = 0:GOTO 228
  305.    IF T > Z THEN T = 0:GOTO 228
  306.    IF C$ > LEFT$(XX$(T),1) THEN T = (T+X):X = INT(X/2):XK=1
  307.    IF X=0 AND XK=1 THEN T=T+1
  308.    W=1
  309.    FL=FL+1: IF FL=20 THEN T=0: GOTO 218
  310.    IF T<1 THEN T=0:GOTO 228
  311.    IF T > Z THEN T=0: GOTO 228
  312.    XL=0:XK=0: GOTO 204
  313.    IF C$= LEFT$(XX$(T),1) THEN 229
  314.    GOTO 222
  315. 218 :   
  316.    IF C$ <> LEFT$(XX$(T),1) THEN 228
  317.    IF C$ = LEFT$(XX$(T),1) THEN 229
  318.    IF UP=1 THEN T=T+1: GOTO 218
  319.    IF DWN=1 THEN T=T-1: GOTO 218
  320.  
  321. 222 :
  322.    IF FL THEN GOTO 204
  323. 228 :
  324.     COLOR 2,3
  325.     LOCATE 23,40:PRINT "COUNTRY NOT LISTED";:COLOR 2,1:RETURN
  326. 229 :
  327.     IC=T
  328. COUNT1:   
  329.    IF C$=LEFT$(XX$(IC),1) THEN IC=IC+1:GOTO COUNT1
  330.    EN=IC:IC=T
  331. COUNT2:
  332.    IF C$=LEFT$(XX$(IC),1) THEN IC=IC-1:GOTO COUNT2
  333.    SN=IC                         
  334.    FOR I=SN TO EN
  335.    IF LEFT$(CS$,3) = > XX$(I) AND LEFT$(CS$,3) = < XL$(I) THEN GOTO BINGO
  336.    NEXT I
  337.    COLOR 2,3
  338.    LOCATE 23,40:PRINT "COUNTRY NOT LISTED";:COLOR 2,1:RETURN
  339. BINGO:
  340.    IF XH$(I) <> "&" THEN BINGO2
  341.    IF XH$(I)="&" AND I=117 AND MID$(CS$,4,1)="A" THEN XH$(I)="EASTER ISLAND":RQ=1:GOTO BINGO2
  342.    IF XH$(I)="&" AND I=117 AND MID$(CS$,4,1)="X" THEN XH$(I)="SAN FELIX":RQ=1:GOTO BINGO2
  343.    IF XH$(I)="&" AND I=117 AND MID$(CS$,4,1)="Z" THEN XH$(I)="JUAN FERNANDEZ":RQ=1:GOTO BINGO2
  344.    IF XH$(I)="&" AND I=168 AND MID$(CS$,4,1)="G" THEN XH$(I)="GLORIOSO ISL":RQ=1:GOTO BINGO2
  345.    IF XH$(I)="&" AND I=168 AND MID$(CS$,4,1)="E" THEN XH$(I)="JUAN DE NOVA - EUROPA":RQ=1:GOTO BINGO2
  346.    IF XH$(I)="&" AND I=168 AND MID$(CS$,4,1)="J" THEN XH$(I)="JUAN DE NOVA - EUROPA":RQ=1:GOTO BINGO2
  347.    IF XH$(I)="&" AND I=168 AND MID$(CS$,4,1)="T" THEN XH$(I)="TROMELIN":RQ=1:GOTO BINGO2
  348.    IF XH$(I)="&" AND I=170 AND MID$(CS$,4,1)="W" THEN XH$(I)="COZET":RQ=1:GOTO BINGO2
  349.    IF XH$(I)="&" AND I=170 AND MID$(CS$,4,1)="X" THEN XH$(I)="KERGUELEN ISL":RQ=1:GOTO BINGO2
  350.    IF XH$(I)="&" AND I=170 AND MID$(CS$,4,1)="Z" THEN XH$(I)="AMSTERDAM & ST.PAUL ISL":RQ=1
  351. BINGO2:
  352.    COLOR 2,3   
  353.    LOCATE 23,37:PRINT CS$;:PRINT " --> ";:PRINT XH$(I);:IF RQ=1 THEN RQ=0:XH$(I)="&"
  354.    COLOR 2,1
  355.    RETURN
  356.  
  357. QSLCONF:
  358.    IF NUM=>NM+1 THEN GOSUB NOGO:RETURN
  359.    QL$="*":LOCATE V,78:PRINT QL$
  360.    LOCATE V,72:PRINT NUM;:LOCATE V,78:PRINT QL$;:
  361.    RETURN
  362.  
  363. NOGO:
  364.    GOSUB CLRBT:COLOR 2,3:LOCATE 21,4:PRINT "Save this line first with key F6 and then use F7.."
  365.    COLOR 2,1
  366.    RETURN
  367.  
  368. QSLCARD:
  369.    GOSUB CLRBT:COLOR 2,3:LOCATE 21,4:PRINT "QSL Card to be Printed No: ";NUM:R%=NUM
  370.    GOSUB CHECKDAT:
  371.    LOCATE 22,4:PRINT "Card In Printer Y/N "
  372. 505 :
  373.    KL$=INKEY$ :KL$=UCASE$(KL$)
  374.    IF KL$="Y" THEN 510   
  375.    IF KL$= "N" THEN 508
  376.    IF KL$ <> "Y" OR KL$ <> "N" THEN 505
  377. 508 :
  378.    IF KL$="N" THEN NUM=NM:V=V-1:AL=1:GOSUB 81:GOTO DATE
  379. 510 :
  380.    MD$=" CW"
  381.    IF MID$(RI$,2,1)="-" THEN MD$="S.S.B"
  382.    RM=2:X=2:IF LEN(FQ$)=5 THEN X=3:RM=1
  383.    TM$=LEFT$(TM$,2)+RIGHT$(TM$,2)
  384.    LPRINT "":LPRINT "":LPRINT "":LPRINT "":LPRINT "":LPRINT ""
  385.    LPRINT "":LPRINT "":LPRINT "":LPRINT "":
  386.    IF LEN(CS$)=4 THEN 521
  387.    IF LEN(CS$)=5 THEN 522
  388.    IF LEN(CS$)=6 THEN 528
  389.    IF LEN(CS$) > 8 THEN 534
  390.    IF LEN(CS$) > 6 THEN 550
  391. 521 :
  392.    LPRINT TAB(21):LPRINT CHR$(&He);CS$;CHR$(&H14);SPC(6):GOTO 536
  393. 522 :
  394.    LPRINT TAB(21):LPRINT CHR$(&He);CS$;CHR$(&H14);SPC(4):GOTO 536
  395. 526 :
  396.    LPRINT TAB(21):LPRINT CHR$(&He);CC$;CHR$(&H14);CD$;:
  397.    LPRINT SPC(15-(LEN(CC$)*2)-LEN(CD$)):GOTO 536
  398. 528 :   
  399.    LPRINT TAB(21):LPRINT CHR$(&He);CS$;CHR$(&H14);SPC(2):GOTO 536
  400. 534 :
  401.    LPRINT TAB(22):LPRINT CS$;:LPRINT SPC(13 - LEN(CS$));:
  402. 536 :
  403.    LPRINT MID$(DT$,4,2);"  ";MM$(VAL(LEFT$(DT$,2)));" ";RIGHT$(DT$,4);:     
  404.    LPRINT SPC(1):LPRINT TM$;:LPRINT SPC(1):LPRINT LEFT$(FQ$,X);:
  405.    LPRINT SPC(RM):LPRINT RI$;:LPRINT SPC(1):LPRINT MD$
  406.    GOSUB CLRBT
  407. 538 :   
  408.    LOCATE 22,4:A$=INKEY$:
  409.    IF A$="" THEN 538
  410.    LPRINT TAB(55):LPRINT CHR$(&He);CS$;CHR$(&H14)
  411.    FOR I = 1 TO 10: LPRINT "":NEXT
  412.    TM$=LEFT$(TM$,2)+":"+RIGHT$(TM$,2)
  413.    QL$="-":GOSUB WRIQSL
  414.    V=6:GOSUB 81:V=V+1:GOTO DATE
  415. 550 :
  416.    A=5:U=LEN(CS$)
  417. 551 :   
  418.    IF MID$(CS$,A,1)="/" THEN CC$=LEFT$(CS$,(A-1)):CD$=MID$(CS$,A,(U-A+1)): GOTO 526
  419.    A=A+1:IF A=U THEN 526
  420.    GOTO 551
  421.       
  422. ALPHAPRINT:
  423.    GOSUB CLRBT
  424.    COLOR 2,3:LOCATE 21,50:PRINT "ALPHA-PRINTOUT..."
  425.    LOCATE 21,4:PRINT "Starting Letter(s) of List: "
  426.    BB=21:LL=32:GOSUB 50:ST$=C$
  427.    B = LEN(ST$):IF B > 6 THEN PRINT  BL$: GOTO ALPHAPRINT
  428.    COLOR 2,3:LOCATE 22,4:PRINT "Ending Letter(s) of List: "
  429.    BB=22:LL=31:GOSUB 50:EN$=C$
  430.    W = LEN(EN$):IF W > 6 THEN PRINT  BL$: GOTO ALPHAPRINT
  431.    GOSUB CLRBT:COLOR 2,3:LOCATE 21,50:PRINT "ALPHA-PRINTOUT...":LOCATE 21,4:PRINT "Print-out will be from ";ST$;" to ";EN$
  432.    LOCATE 22,4:PRINT "Are You Happy With These Figures ? Y/N ";:
  433. BCK1:    
  434.    KL$=INKEY$ :KL$=UCASE$(KL$)
  435.    IF KL$ = "Y" THEN BCK3
  436.    IF KL$= "N" THEN BCK2 
  437.    IF KL$ <> "Y" OR KL$ <> "N" THEN BCK1
  438. BCK2:
  439.    IF KL$="N" THEN NUM=NM:V=V-1:AL=1:GOSUB 81:GOTO DATE
  440. BCK3:
  441.    GOSUB CLRBT:COLOR 2,3:LOCATE 21,50:PRINT "ALPHA-PRINTOUT..."
  442.    LOCATE 21,4:PRINT "Printout every CallSign ONCE ? Y/N"
  443. BCK4:
  444.    KL$=INKEY$ :KL$=UCASE$(KL$)
  445.    IF KL$ = "Y" THEN EC=0:GOTO BCK5
  446.    IF KL$= "N" THEN EC=1:GOTO BCK5 
  447.    IF KL$ <> "Y" OR KL$ <> "N" THEN BCK4
  448. BCK5:  
  449.    PG=1:PA=1
  450.    FOR I = 1 TO NUM: IF ST$=LEFT$(IN$(I),B) THEN Q = I:GOTO JMP1
  451.    NEXT I
  452.    IF Q=0 THEN Q=1
  453.  JMP1:  
  454.    FOR I = NUM TO 1 STEP - 1:IF EN$=LEFT$(IN$(I),W) THEN E=I:GOTO JMP2
  455.    NEXT I
  456.    GOSUB CLRBT
  457.  JMP2:
  458.    R%=VAL(RIGHT$(IN$(Q),4)):R$=RIGHT$(IN$(Q),4)
  459.    GOSUB CHECKDAT:
  460.    IF Q=1 THEN GOTO 600
  461.    IF EC=1 THEN 600
  462.    AV$=LEFT$(IN$(Q-1),LEN(IN$(Q-1))-4)
  463.    IF AV$=CS$ THEN Q=Q+1:PG=PG-1:GOTO JMP3
  464. 600 :   
  465.    IF PG=1 THEN LPRINT TAB(25):LPRINT "A L P H A  L I S T from  ";ST$;" to ";EN$;:LPRINT TAB (70)
  466.    IF PG=1 THEN LPRINT "PAGE :"PA:FOR I = 1 TO 80:LPRINT "-";:NEXT
  467.    IF PG=1 THEN LPRINT "NUM. CALLSIGN  DATE        TIME  FREQ.  SIGNAL  SIGNAL  NAME     TOWN        QSL":
  468.    IF PG=1 THEN FOR I = 1 TO 80:LPRINT "-";:NEXT:LPRINT:   
  469.    GOSUB PRILINE:Q=Q+1
  470. JMP3:
  471.    IF Q=E+1 THEN FOR I=1 TO 80:LPRINT "-";:NEXT I:NUM=NM:AL=1:V=V-1:GOSUB 81: GOTO DATE
  472.    PG=PG+1:IF PG=KJ THEN PG = 1:PA=PA+1:LPRINT :LPRINT :FOR I=1 TO 80:LPRINT "-";:NEXT:LPRINT :LPRINT :LPRINT :LPRINT :
  473.    GOTO JMP2
  474.    
  475. PRILINE:   
  476.    LPRINT R$;:LPRINT TAB(6):LPRINT CS$;:LPRINT TAB(16):
  477.    LPRINT MID$(DT$,4,2);" ";MM$(VAL(LEFT$(DT$,2)));"'";RIGHT$(DT$,2);:
  478.    LPRINT TAB(28):LPRINT  TM$;:LPRINT TAB(34):LPRINT  FQ$;:LPRINT  TAB(41):
  479.    LPRINT "His:";RI$;:LPRINT  TAB(49):LPRINT "Me:";RO$;:LPRINT  TAB(57):
  480.    LPRINT  NM$;:LPRINT  TAB(66):LPRINT  QT$;:LPRINT TAB(80):LPRINT QL$
  481.    LPRINT ""
  482. RETURN
  483.  
  484. 700 :  ' Check-routine for the right NUM after (F1)
  485.    R%=NUM:X=0:
  486. 705 :
  487.    GOSUB CHECKDAT
  488.    IF CS$ = "" OR LEFT$(CS$,1)=" " THEN R%=R%-1:X=1: GOTO 705
  489.    IF X=1 AND CS$ <> CHR$(13)  THEN GOTO 730
  490.    IF CS$ <> CHR$(13) THEN R%=R%+1: GOTO 705
  491. 730 :
  492.    NUM=R%
  493.    RETURN
  494.  
  495. 1000 :
  496.    GOSUB REA.INNUM:GOSUB 80          
  497.    MA$=LEFT$(DATE$,2):MN=VAL(MA$):V=V+1
  498.  
  499. DATE: 'TD$=DD DT$=MM-DD-YYYY
  500.    WN=7:COLOR 2,1
  501.    LOCATE V,3:PRINT TD$:IF LEN (TD$) >1 THEN SS=1:SS$=LEFT$(TD$,1)
  502.    H=3: GOSUB 100
  503.    IF SU=1 THEN SU=0:GOTO DATE
  504.    IF JP THEN LOCATE V,H:PRINT TD$:GOSUB 1800 :GOTO DATE
  505.    IF MV=1 THEN MV=0:LOCATE V,H:PRINT TD$:GOTO QTH
  506.    IF MV=2 THEN MV=0:LOCATE V,H:PRINT TD$:GOTO CALLSIGN
  507.    IF C$="" THEN TD$=MID$(DATE$,4,2):LOCATE V,3:PRINT TD$:GOTO CALLSIGN
  508.    IF LEN (C$) > 2 THEN PRINT  BL$:GOTO DATE
  509.    TD$=C$:IF LEN (C$) = 1 THEN TD$="0"+C$:LOCATE V,3:PRINT TD$
  510.    
  511. CALLSIGN:
  512.    IF MB=1 THEN MB=0:GOTO DATE
  513.    WN=2
  514.    IF MCS=1 THEN SKIPOCS
  515.    IF CS$="" THEN FX=1
  516.    OCS$=CS$:   
  517.    SKIPOCS:
  518.    LOCATE V,7:PRINT CS$:IF LEN (CS$) >1 THEN SS=1:SS$=LEFT$(CS$,1)
  519.    H=7: GOSUB 100:
  520.    IF NUM = < NM THEN NCS=1
  521.    IF MV=1 THEN MV=0:LOCATE V,7:PRINT CS$:GOTO DATE
  522.    IF C$="" OR MV=2 THEN MV=0:LOCATE V,7:PRINT CS$:GOTO TYD
  523.    CS$=C$
  524.    IF NUM = < NM THEN 1092
  525.    GOSUB 2 :GOSUB 200
  526. 1092 :
  527.    IF NCS=1 AND OCS$ < > CS$ THEN MCS=1 
  528.    LOCATE V,7:PRINT "         ":LOCATE V,7:PRINT CS$
  529.  
  530. TYD:
  531.    WN=3
  532.    LOCATE V,19:PRINT TM$:IF LEN (TM$) >1 THEN SS=1:SS$=LEFT$(TM$,1)
  533.    H=19: GOSUB 100
  534.    IF MV=1 THEN MV=0:LOCATE V,19:PRINT TM$:GOTO CALLSIGN
  535.    IF MV=2 THEN MV=0:LOCATE V,19:PRINT TM$:GOTO FREQUENTY
  536.    IF C$=""THEN TM$=LEFT$(TIME$,5):LOCATE V,19:PRINT TM$:GOTO FREQUENTY
  537.    IF LEN (C$)=1 THEN C$="000"+C$
  538.    IF LEN (C$)=2 THEN C$="00"+C$
  539.    IF LEN (C$)=3 THEN C$="0"+C$ 
  540.    TM$=LEFT$(C$,2)+":"+RIGHT$(C$,2):LOCATE V,19:PRINT TM$
  541.  
  542. FREQUENTY:
  543.    WN=4
  544.    LOCATE V,27:PRINT FQ$:IF LEN (FQ$) >1 THEN SS=1:SS$=LEFT$(FQ$,1)
  545.    H=27: GOSUB 100
  546.    IF MV=1 THEN MV=0:LOCATE V,27:PRINT FQ$:GOTO TYD
  547.    IF MV=2 THEN MV=0:LOCATE V,27:PRINT FQ$:GOTO RSTIN
  548.    IF C$="" THEN FQ$=QF$:LOCATE V,27:PRINT FQ$:GOTO RSTIN
  549.    IF LEN (C$)>5 THEN PRINT CHR$(7):GOTO FREQUENTY
  550.    IF LEN (C$)=4 THEN C$=" "+C$
  551.    FQ$=LEFT$(C$,2)+"."+RIGHT$(C$,3):QF$=FQ$:LOCATE V,27:PRINT FQ$
  552.  
  553.  
  554. RSTIN:
  555.    WN=1
  556.    LOCATE V,36:PRINT RI$:IF LEN (RI$) >1 THEN SS=1:SS$=LEFT$(RI$,1)
  557.    H=36: GOSUB 100
  558.    IF MV=1 THEN MV=0:LOCATE V,36:PRINT RI$:GOTO FREQUENTY
  559.    IF C$="" OR MV=2 THEN MV=0:LOCATE V,36:PRINT RI$:GOTO RSTOUT
  560.    IF LEN(C$)= 3 THEN RI$=C$: LOCATE V,36:PRINT  RI$:GOTO RSTOUT
  561.    RI$=LEFT$(C$,1)+"-"+RIGHT$(C$,1):LOCATE V,36:PRINT RI$
  562.    
  563. RSTOUT:
  564.    WN=1
  565.    LOCATE V,41:PRINT RO$:IF LEN (RO$) >1 THEN SS=1:SS$=LEFT$(RO$,1)
  566.    H=41: GOSUB 100
  567.    IF MV=1 THEN MV=0:LOCATE V,41:PRINT RO$:GOTO RSTIN
  568.    IF C$="" OR MV=2 THEN MV=0:LOCATE V,41:PRINT RO$:GOTO NAAM
  569.    IF LEN(C$)= 3 THEN RO$=C$: LOCATE V,41:PRINT  RO$:GOTO NAAM
  570.    RO$=LEFT$(C$,1)+"-"+RIGHT$(C$,1):LOCATE V,41:PRINT RO$
  571.  
  572. NAAM:
  573.    IF YU=1 THEN YU = 0: LQ=1:GOTO QSL
  574.    WN=5
  575.    LOCATE V,46:PRINT NM$:IF LEN (NM$) >1 THEN SS=1:SS$=LEFT$(NM$,1)
  576.    H=46: GOSUB 100
  577.    IF MV=1 THEN MV=0:LOCATE V,46:PRINT NM$:GOTO RSTOUT
  578.    IF C$="" OR MV=2 THEN MV=0:LOCATE V,46:PRINT NM$:GOTO QTH
  579.    NM$=C$:LOCATE V,46:PRINT "         ":LOCATE V,46:PRINT NM$
  580.  
  581. QTH:
  582.    WN=6
  583.    LOCATE V,57:PRINT QT$:IF LEN (QT$) >1 THEN SS=1:SS$=LEFT$(QT$,1)
  584.    H=57: GOSUB 100
  585.    IF MV=1 THEN MV=0:LOCATE V,57:PRINT QT$:GOTO NAAM
  586.    IF C$="" OR MV=2 THEN MV=0:LOCATE V,57:PRINT QT$:GOTO DATE
  587.    QT$=C$:LOCATE V,57:PRINT "            ":LOCATE V,57:PRINT QT$
  588.  
  589. QSL:
  590.    IF LQ=1 THEN  GOTO QLPR
  591.    IF NUM=1 AND NM=1 THEN GOTO SKIP3
  592.    IF NUM = < NM THEN GOTO QLPR
  593. SKIP3:
  594.    QL$="+":LOCATE V,78:PRINT QL$
  595. QLPR:
  596.    LOCATE V,72:PRINT NUM;:LOCATE V,78:PRINT QL$;:
  597.    GOTO DATE
  598.  
  599. MOVETONUM:
  600.    GOSUB CLRBT
  601.    COLOR 2,3:LOCATE 21,50:PRINT "MOVE TO LINE-NUMBER..."
  602.    LOCATE 21,4:PRINT "Type in Line Number :"
  603.    BB=21:LL=26:GOSUB 50:R$=C$:COLOR 2,3
  604.    LOCATE 22,4:PRINT "Correct Number Y/N ? "
  605. 1505 :
  606.    KL$=INKEY$ :KL$=UCASE$(KL$):IF KL$="Y" THEN 1510   
  607.    IF KL$= "N" THEN 1508
  608.    IF KL$ <> "Y" OR KL$ <> "N" THEN 1505
  609. 1508 :
  610.    IF KL$="N" THEN NUM=NM:V=6:AL=1:GOSUB 81:GOTO DATE
  611. 1510 : 
  612.     R%=VAL(R$):NUM=R%-1:IF NUM=0 THEN NUM = 1
  613.    GOSUB CHECKDAT
  614.    V=6:GOSUB 81:V=V+1:GOTO DATE
  615.    
  616.  
  617.  
  618.  
  619.  
  620. 1800 : 'Decrement Line
  621.    IF CS$ = "" THEN LOCATE V,73:PRINT "    ";:
  622.    IF JP=2 THEN GOTO 1900
  623.    V=V-1:NUM=NUM-1:IF NUM < 1 THEN NUM = 1 :V=V+1:NF=1
  624.    IF V<6 THEN V=19
  625.    GOTO 1910
  626. 1900 : 'Increment Line
  627.    IF JL=1 THEN JL=0:RETURN
  628.    V=V+1:NUM=NUM+1
  629.    IF V>19 THEN V=6
  630. 1910 :
  631.    IF NF=1 THEN NF=0:JP=0:RETURN
  632. 1915 :
  633.    JP=0
  634.    R%=NUM:GOSUB READAT
  635.    IF V < 6 THEN V = 19
  636.    IF V > 19 THEN V = 6
  637.    TD$=MID$(DT$,4,2)
  638.    COLOR 2,1 : IF CS$="" THEN CS$="         ":KO=1
  639.    LOCATE V,3:PRINT TD$;:PRINT  TAB(7);CS$;:PRINT  TAB(19);TM$;:
  640.    LOCATE V,27:PRINT FQ$;:PRINT  TAB(36);RI$;:PRINT  TAB(41);RO$;:
  641.    LOCATE V,46:PRINT NM$;:PRINT  TAB(57);QT$;:
  642.    LOCATE V,72:PRINT  NUM;:PRINT  TAB(78);QL$;:
  643.    IF KO=1 THEN KO=0:CS$=""
  644.    COLOR 2,3:LOCATE 2,57:PRINT NM:LOCATE 2,72:PRINT NUM 
  645. CLRBT:
  646.    COLOR 3,3:FOR I=21 TO 23:LOCATE I,4:PRINT  STRING$(77," ");:NEXT
  647.    COLOR 2,1
  648. RETURN
  649.  
  650. WRITDAT:
  651.    R%=NUM :DT$=MA$+"-"+TD$+"-"+YR$
  652. WRIQSL:
  653.    IF LEFT$(CS$,1)=" " OR CS$="" THEN RETURN
  654.    IF NUM > NM+1 THEN JL=1:GOTO WARN1
  655.       
  656.    OPEN "R",#1,"LOGFIL",59
  657.    FIELD #1,10 AS A$,9 AS B$,5 AS C$,6 AS D$,3 AS E$,3 AS F$,9 AS G$,13 AS H$,1 AS I$
  658.  
  659.    LSET A$=DT$
  660.    LSET B$=CS$
  661.    LSET C$=TM$
  662.    LSET D$=FQ$
  663.    LSET E$=RO$
  664.    LSET F$=RI$
  665.    LSET G$=NM$
  666.    LSET H$=QT$
  667.    LSET I$=QL$
  668.    PUT #1,R%
  669.    CLOSE #1
  670.    IF MCS=1 THEN MCS=0:NCS=0:GOSUB CHKCHGCS
  671. RETURN
  672.  
  673. WARN1:
  674.    GOSUB CLRBT:COLOR 2,3:LOCATE 21,4
  675.    PRINT "You CANNOT Save this line......"
  676.    LOCATE 22,4:PRINT "There is NO info on previous line(s) !!!";:
  677.    PRINT BL$:COLOR 2,1
  678.    RETURN
  679.  
  680. READAT:
  681.    R%=NUM
  682. CHECKDAT:
  683.    OPEN "R",#1,"LOGFIL",59
  684.    FIELD #1,10 AS A$,9 AS B$,5 AS C$,6 AS D$,3 AS E$,3 AS F$,9 AS G$,13 AS H$,1 AS I$
  685.    GET #1,R%
  686.    LET DT$=A$
  687.    LET CS$=B$
  688.    LET TM$=C$
  689.    LET FQ$=D$
  690.    LET RO$=E$
  691.    LET RI$=F$
  692.    LET NM$=G$
  693.    LET QT$=H$
  694.    LET QL$=I$ 
  695.    CLOSE #1
  696.    Z=INSTR(CS$," "):IF Z=0 THEN RETURN
  697.    CS$=LEFT$(CS$,Z-1):Z=0
  698. RETURN
  699.  
  700. WRI.INNUM:
  701.    OPEN "INFLOG" FOR OUTPUT AS #1 
  702.    WRITE #1,NUM
  703.    FOR I = 1 TO NUM
  704.    WRITE #1,IN$(I)
  705.    NEXT I
  706.    CLOSE #1
  707.    KILL "INFLOG.INFO"
  708. RETURN
  709.  
  710. REA.INNUM:
  711.    OPEN "I",#1,"INFLOG"
  712.    INPUT #1,NUM
  713.    DM=NUM+250:DIM IN$(DM) 
  714.    FOR I = 1 TO NUM
  715.    INPUT #1,IN$(I)
  716.    NEXT I
  717.    CLOSE #1
  718.    IF NUM=0 THEN NUM=1
  719.    NM=NUM
  720. RETURN
  721.  
  722. CONVNR: 'Convert Num into string for Callsign+number
  723.    IF NUM=1 AND NM=1 THEN FC=1: GOTO SKIP2
  724.    IF LEFT$(CS$,1)=" " OR CS$="" THEN RETURN
  725.    IF NUM = < NM THEN RETURN
  726.    IF JL=1 THEN RETURN
  727. SKIP2:
  728.    A$=STR$(NUM):A$=MID$(A$,2,(LEN(A$)-1))
  729.    IF LEN(A$)=1 THEN A$="000"+A$
  730.    IF LEN(A$)=2 THEN A$="00"+A$
  731.    IF LEN(A$)=3 THEN A$="0"+A$
  732.    CS$=CS$+A$:IN$(NUM)=CS$
  733.    IF FC=1 THEN FC=0:RETURN: 'FC is flag for FIRST CALLSIGN
  734.    NM=NM+1:
  735.    FOR I=NUM TO 2 STEP - 1
  736.    IF IN$(I) < IN$(I-1) THEN SWAP IN$(I),IN$(I-1):NEXT I
  737. RETURN
  738.  
  739. CHKCHGCS: 'Check Change in CallSign
  740. IF OCS$="" OR LEFT$(OCS$,1)=" " THEN RETURN
  741.  
  742.    JO=1
  743.    GOSUB 2
  744.    JO=0
  745. LKAGN:   
  746.    IF VAL(RIGHT$(IN$(Q),4))=R% THEN CH=Q:CS$ = CS$ + RIGHT$(IN$(Q),4): IN$(Q)=CS$: GOTO ALPHASORT
  747.    Q=Q+1:IF Q=E+1 THEN RETURN
  748.    GOTO LKAGN 
  749. RETURN
  750.  
  751. ALPHASORT:
  752.    IF Q=1 THEN CH=0:RETURN
  753.    IF IN$(Q) < IN$(Q-1) THEN SWAP IN$(Q),IN$(Q-1):Q=Q-1:GOTO ALPHASORT
  754.    IF Q <> CH THEN CH=0:RETURN
  755. SECALFA:
  756.    IF Q=NM THEN CH=0:RETURN
  757.    IF IN$(Q) > IN$(Q+1) THEN SWAP IN$(Q),IN$(Q+1):Q=Q+1:GOTO SECALFA
  758.    CH=0
  759.    RETURN
  760.  
  761. MAKEDATA:
  762.  
  763. IF VAL(SU$(2))=< NUM+50 THEN GAH
  764. RETURN
  765.  
  766. GAH:
  767.  
  768.    GOSUB CLRBT:COLOR 2,3
  769.    LOCATE 21,5:PRINT "Please WAIT, now updating files......."
  770.     LOCATE 22,5:PRINT "Writing DATA to file > Line NUMBER = "
  771.    S$=SU$(2):I%=VAL(S$)-1
  772.    E%=I%+51:E$=STR$(E%):SU$(2)=E$:SU$(3)=""
  773.    SU$(2)=MID$(SU$(2),2,LEN(SU$(2))-1):SU$(3)=SU$(2)
  774.    DT$="":CS$="":TM$="":FQ$="":RO$=""
  775.    RI$="":NM$="":QT$="":QL$=""
  776.  
  777.    OPEN "R",#1,"LOGFIL",59
  778.    FIELD #1,10 AS A$,9 AS B$,5 AS C$,6 AS D$,3 AS E$,3 AS F$,9 AS G$,13 AS H$, 1 AS I$
  779.  
  780. START:
  781.  
  782.    I%=I%+1:IF I%=E% THEN CLOSE #1:GOTO WRISETUP
  783.    LOCATE 22,41: PRINT I%;:
  784.    LSET A$ = DT$
  785.    LSET B$ = CS$
  786.    LSET C$ = TM$
  787.    LSET D$ = FQ$
  788.    LSET E$ = RO$
  789.    LSET F$ = RI$
  790.    LSET G$ = NM$
  791.    LSET H$ = QT$
  792.    LSET I$ = QL$
  793.    PUT #1,I%
  794.    GOTO START
  795.      
  796. WRISETUP:
  797.    OPEN "SETUP"FOR OUTPUT AS #1
  798.    FOR I = 1 TO 4
  799.    WRITE #1,SU$(I)
  800.    NEXT
  801.    CLOSE #1
  802.    KILL "SETUP.INFO"
  803. RETURN
  804.   
  805. 30000 :
  806.    DIM MM$(12) :V=6:BL$=CHR$(7)
  807.    DIM MTH$(12):MT=VAL(LEFT$(DATE$,2)):YR$=RIGHT$(DATE$,4)
  808.    Z2$="DATE CALLSIGN    TIME    FREQ.    HIS  ME   NAME       QTH            NUM QSL"
  809.    DATA JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER
  810.    FOR I=1 TO 12:READ MTH$(I):NEXT
  811.    DATA JAN.,FEB.,MAR.,APR.,MAY.,JUN.,JUL.,AUG.,SEP.,OCT.,NOV.,DEC.
  812.    FOR I = 1 TO 12:READ MM$(I):NEXT
  813.    OPEN "I",#1,"SETUP"
  814.    INPUT #1,SU$(1)
  815.    INPUT #1,SU$(2)
  816.    INPUT #1,SU$(3)
  817.    INPUT #1,SU$(4)
  818.    CLOSE #1
  819.    X=INT(LEN(SU$(1))/2):Z=33-X
  820.    KJ=VAL(SU$(4))
  821.    
  822.    DIM XX$(450):DIM XL$(450):DIM XH$(450)
  823.    OPEN "I",#1,"COUNTRY"
  824.    INPUT #1,DKX
  825.    FOR I=1 TO DKX
  826.    INPUT #1,XX$(I)
  827.    INPUT #1,XL$(I)
  828.    INPUT #1,XH$(I)
  829.    NEXT
  830.    CLOSE #1
  831. RETURN
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.